package com.minimalist.lindi.service;

import com.minimalist.common.config.mybatis.bo.PageResp;
import com.minimalist.common.entity.lindi.po.LindiEnterpriseAccount;
import com.minimalist.common.entity.lindi.vo.enterpriseaccount.LindiEnterpriseAccountQueryVO;
import com.minimalist.common.entity.lindi.vo.enterpriseaccount.LindiEnterpriseAccountVO;
import com.mybatisflex.core.service.IService;

import java.util.List;

/**
 * 林地指标交易平台_企业用户表 服务层。
 *
 * @author 11987
 * @since 2025-03-31
 */
public interface LindiEnterpriseAccountService extends IService<LindiEnterpriseAccount>{

    /**
     * 新增企业用户
     *
     * @param enterpriseAccountVO 企业用户信息
     */
    void addEnterpriseAccount(LindiEnterpriseAccountVO enterpriseAccountVO);

    /**
     * 删除企业用户
     *
     * @param enterpriseAccountId 企业用户ID
     */
    void deleteEnterpriseAccountByEnterpriseAccountId(Long enterpriseAccountId);

    /**
     * 更新企业用户信息
     *
     * @param enterpriseAccountVO 企业用户信息
     */
    void updateEnterpriseAccountByEnterpriseAccountId(LindiEnterpriseAccountVO enterpriseAccountVO);

    /**
     * 查询企业用户列表
     *
     * @param queryVO 查询条件
     * @return 分页查询结果
     */
    PageResp<LindiEnterpriseAccountVO> getPageEnterpriseAccountList(LindiEnterpriseAccountQueryVO queryVO);

    /**
     * 根据企业用户ID查询企业用户信息
     *
     * @param enterpriseAccountId 企业用户ID
     * @return 企业用户信息
     */
    LindiEnterpriseAccountVO getEnterpriseAccountByEnterpriseAccountId(Long enterpriseAccountId);

    /**
     * 根据手机号查询企业用户密码
     *
     * @param enterpriseMobile 企业用户手机号
     * @return 企业用户密码
     */
    String getEnterpriseAccountPasswordByMobile(String enterpriseMobile);

    /**
     * 查询企业账号列表
     *
     * @return 企业账号列表
     */
    List<LindiEnterpriseAccountVO> getEnterpriseAccountList();
    
    /**
     * 企业用户登录验证
     *
     * @param mobile 企业联系方式（手机号）
     * @param password 企业密码
     * @return 企业用户信息，登录失败返回null
     */
    LindiEnterpriseAccountVO loginByMobile(String mobile, String password);
}
